As software systems become increasingly complex, it is increasingly necessary for organizations to invest more significantly in the development and maintenance of such software systems (collectively called software life cycle management). A software program is typically organized as a collection of components or modules that can, in turn, be recursively made up of smaller sub-components.
When a new software program is created, the developer typically manually evaluates the relevance of existing components based on development objectives such as available time and an expected performance metric. Similarly, when a software program has been released and is being maintained, any updates to the dependent components is evaluated, either manually or blindly (possibly through timestamps), to determine whether a rebuild of the software program is necessary.
A key challenge in software life cycle management is how to effectively leverage or gain the benefit of existing software components while using resources to: (a) develop and support software to a specification and (b) deliver the software in a timely manner.
A Work Breakdown Structure (WBS) is commonly used to identify the different tasks at some granularity and input this information to a project management tool along with estimates on the time and resources required for each task. Microsoft Project™ (MS Project) is a standard tool used in industry for scheduling activities. Once a user has defined a task network, the critical path of the project and the slack times for individual tasks are determined. Task assignments can then evaluated to identify over-allocated resources. To resolve resource over-allocation, the resources must either be allocated differently or tasks must be re-scheduled (a euphemism for “delayed”) until the necessary resource/s is/are available. A resource in a commercial project typically refers to a person but can also comprise equipment, etc.
When a new software program is created, the user (typically a project manager or software developer) manually evaluates the relevance of existing software components based on development objectives like development time and required software performance. Similarly, when a released software program is being maintained, any updates or patches to the dependent components is manually evaluated to determine whether the software program requires rebuilding. Although certain tools for tracking component dependencies and recording the history of component releases are available, a major problem in software management still remains that trade-off choices have to be manually evaluated.
U.S. Pat. No. 5,548,506, entitled “Automated, Electronic Network Based, Project Management Server System, for Managing Multiple Work-Groups”, issued on Aug. 20, 1996 to Srinivasan et al. This patent focuses on collaborative project management using a central server computer system.
U.S. Pat. No. 6,381,580, entitled “Automatic Planning and Cueing System and Method”, issued on Apr. 30, 2002 to Levinson and is assigned to Attention Control Systems, Inc. This patent relates to a calendaring system and method for reminding a user of upcoming tasks and appointments and for automatically planning a user's calendar based on inputted tasks and goals of a user and cueing the user at the beginning and end of a task or appointment.
U.S. Pat. No. 6,240,395, entitled “Device and Method for Project Management”, issued on May 29, 2001 to Kumashiro et al. and is assigned to Fujitsu Limited. This patent relates to the generation of schedule tables, the collection of information during operations and provision of a visualization device for project management.
U.S. Pat. No. 6,237,020, entitled “Task-Oriented Automatic Distribution of Software”, issued on May 22, 2001 to Leyman et al. and is assigned to IBM Corporation. This patent relates to the field of computer systems acting as workflow management systems (WFMS) and describes a software distribution mechanism based on flow information.
U.S. Pat. No. 6,106,569, entitled “Method of Developing a Software System Using Object Oriented Technology”, issued on Aug. 22, 2000 to Bohrer et al. and is assigned to IBM Corporation. This patent relates to frameworks in various application domains (such as finance) and the reuse of pre-developed modules in the context of a framework. Neither automated selection of software components for reuse nor automated maintenance of software components is disclosed.
U.S. Pat. No. 6,167,564, entitled “Software System Development Framework”, issued on Dec. 26, 2000 to Fontana et al. and is assigned to Unisys Corporation. This patent relates to frameworks for domains based on business models, domain models, reusable components (technology dependent or independent) and artifacts. Changes or updates can be discovered within the context of a framework, which may assist reuse of components. However, all reasoning is done within a user-created framework. Neither automated selection of software components for reuse nor automated maintenance of software components is disclosed.
U.S. Pat. No. 5,930,798, entitled “Universal Data Measurement, Analysis and Control System”, issued on Jul. 27, 1999 to Lawler et al. and is assigned to Predicate Logic, Inc. This patent relates to the collection and use of metrics relating to software (e.g. collection of performance data) for analysis of software process improvement. The disclosure focuses on component modelling rather than component selection. Neither automated selection of software components for reuse nor automated maintenance of software components is disclosed.
International Patent Publication No. WO/03225, entitled “Method and System for Product LifeCycle Management”, by Davies et al., published Jan. 10, 2002, relates to a collaborative application development environment where reuse is facilitated by modelling of business objects with software components arranged therein. Neither automated selection of software components for reuse nor automated maintenance of software components is disclosed.
IBM Technical Disclosure Bulletin MA886-0163, Vol. 33, No. 2, July 1990, by Lyne et al. and entitled “Reusable Software Development Toolset”, relates to user selection of reusable components from a palette. Neither automated selection of software components for reuse nor automated maintenance of software components is disclosed.
Reusable software library organisers, such as RogueWave® SourcePro™Core by Rogue Wave Software of 5500 Flatiron Parkway Boulder, Colo. 80301 USA, organize software components to facilitate later reuse. However, a user still has to review the components manually to identify possible candidates that can be used in a software project. No support is available to a user to assist with decisions relating to the tradeoff between the integration time of the software component into the project and the software component's potential performance.
Tools like Microsoft Project™ show timelines or deadlines for tasks and dependencies of tasks. However, a user has to manually select software components to progress a project to completion.
The Make software tool provides a simple way to detect changes in dependent components and rebuild a software program based selectively on need. But since the Make software tool uses a timestamp of a component rather than any change in the component's functionality, unnecessary rebuilds of the software may result.
Accordingly, a need exists to provide a method, a system and a computer program product that can automatically identify different options and assist a user in making decisions relating to management of a project.
A more specific need exists to provide a decision support system, a method and a computer program product capable of assisting a user to make decisions relating to development and maintenance options in a software project, by automatically identifying and analyzing different available options.